import request from '@/utils/request';
import type { BaseBeanModel, ResponsePageData, ResponseBaseData, QueryParamModel } from '@/api/model/baseModel';
const basePath = '/appsys/datapermissions/SysDataPermissionsMethodRest';
/** 数据权限规则维护 */
export interface SysDataPermissionsRuleDto extends BaseBeanModel {
  /** 规则名称 */
  ruleName?: string;
  /** 状态 */
  state?: string;
  /** 规则说明 */
  ruleRemarks?: string;
  /** 相邻匹配符 */
  matchSymbol?: string;
  /** 排序号 */
  orderBy?: number;
  /** 列名 */
  columnName?: string;
  /** 列匹配符号 */
  columnSymbol?: string;
  /** 列类型 */
  columnType?: string;
  /** 列值 */
  columnValue?: string;
  /** 过滤条件 翻译 */
  filterCondition?: string;
  /** 过滤sql */
  filterConditionSql?: string;
  /** ATTRIBUTE_01 */
  attribute01?: string;
  /** ATTRIBUTE_02 */
  attribute02?: string;
  /** ATTRIBUTE_03 */
  attribute03?: string;
  /** ATTRIBUTE_04 */
  attribute04?: string;
  /** ATTRIBUTE_05 */
  attribute05?: string;
  /** ATTRIBUTE_06 */
  attribute06?: string;
  /** ATTRIBUTE_07 */
  attribute07?: string;
  /** ATTRIBUTE_08 */
  attribute08?: string;
  /** ATTRIBUTE_09 */
  attribute09?: string;
  /** ATTRIBUTE_10 */
  attribute10?: string;
  /** 主表id */
  methodId?: string;
  /** 唯一标识 */
  identifier?: number;
  /** 应用ID */
  sysApplicationId?: string;
  /** 类型 */
  ruleType?: string;
  /** sql */
  sql?: string;
}

/**
 * 获取分页数据
 * @param param 表格参数
 * @returns 表格数据
 */
export function listSysDataPermissionsRuleByPage(
  param: QueryParamModel
): Promise<ResponsePageData<SysDataPermissionsRuleDto>> {
  return request.post(`${basePath}/searchSysDataPermissionsRuleByPage/v1`, param);
}

/**
 * 根据id加载数据
 * @param id 选中数据id
 * @returns 详情数据
 */
export function getSysDataPermissionsRule(id: string): Promise<ResponseBaseData<SysDataPermissionsRuleDto>> {
  return request.get(`${basePath}/get/${id}/v1`);
}

/**
 * 保存表单数据
 * @param form 表单数据
 */
export function saveSysDataPermissionsRule(form: SysDataPermissionsRuleDto): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/saveSub/v1`, form);
}
/**
 * 编辑表单数据
 * @param form 表单数据
 */
export function updateSysDataPermissionsRule(form: SysDataPermissionsRuleDto): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/updateSub/v1`, form);
}

/**
 * 根据id集合删除数据
 * @param ids 选中数据id集合
 */
export function delSysDataPermissionsRule(ids: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/deleteSubById/v1`, ids);
}

/**
 * 根据id集合批量删除数据
 * @param ids 选中数据id集合
 */
export function delSysDataPermissionsRules(ids: string[]): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/delete-sub-by-ids/v1`, ids);
}

/**
 * 规则详情
 * @param id 选中数据id
 * @returns 详情数据
 */
export function getSysDataPermissionsRuleDetails(id: string): Promise<ResponseBaseData<any>> {
  return request.get(`${basePath}/getSub/v1/${id}`);
}

/**
 * 复制规则保存
 * @param params 选择规则id集合
 * @param id 主表id
 */
export function saveCopyRuleData(params, id: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/saveCopyRuleData/v1/${id}`, params);
}

/**
 * 更新规则状态
 * @param id 规则id
 * @param type 状态 true/false
 */
export function updateRuleStateById(id: string, type: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/updateRuleStateById/v1/${id}/${type}`);
}

/**
 * 获取字段数据集合
 * @param serviceName
 * @param tableName
 */
export function getColumnByTableName(serviceName: string, tableName: string): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/getColumnByTableName/v1`, { serviceName, tableName });
}

/**
 * 获取规则维护信息
 * @param params 表格参数
 * @returns 表格数据
 */
export function sysDataPermissionsDefRuleRest(params): Promise<ResponseBaseData<any>> {
  return request.post('appsys/datapermissions/SysDataPermissionsDefRuleRest/searchByPage/v1', params);
}

/**
 * 获取其他规则信息
 * @param params 表格参数
 * @returns 表格数据
 */
export function getEffectiveBusinessRulesByPage(params): Promise<ResponseBaseData<any>> {
  // eslint-disable-next-line max-len
  return request.post(
    'platform6/sysdatapermissionsmethod/SysDataPermissionsMethodRest/getEffectiveBusinessRulesByPage/v1',
    params
  );
}
/**
 * 获取现有规则列表
 * @param id 主表id
 * @returns 表格数据
 */
export function getSubByPid(id: string): Promise<ResponseBaseData<any>> {
  return request.get(`${basePath}/getSubByPid/v1/${id}`);
}
